Selective Location Determination

ABSTRACT

Methods, program products, and systems for selective location determination are described. A mobile device can determine a location of the mobile device using various techniques. When there is a conflict between the locations determined using different techniques, the mobile device can select a most trustworthy location from the locations, and designate the most trustworthy location as a current location of the mobile device. The mobile device can determine a first location of the mobile device (e.g., a coarse location) using a cell identifier (cell ID) of a cellular network. The mobile device can determine a second location of the mobile device (e.g., a fine location) using one or more media access control (MAC) addresses of a WLAN. The first location and second location can be associated with confidence values that can indicate trustworthiness of the first location and second location.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is the divisional of and claims the benefit under 35U.S.C. §120 of U.S. patent application Ser. No. 12/851,500, filed Aug.5, 2010, which claims the benefit under 35 U.S.C. §119(e) of U.S.Provisional Application Ser. No. 61/321,838, filed on Apr. 7, 2010.

TECHNICAL FIELD

This disclosure relates generally to determining a location of a mobiledevice.

BACKGROUND

A modern mobile device can incorporate functions of a computer, of acellular transceiver, or a wireless (e.g., WiFi™) transceiver. Forexample, the mobile device can perform traditional computer functions,such as executing application programs, storing various data, anddisplaying digital images. These functions can be performed in anapplication subsystem of the mobile device. The application subsystemcan include an application processor, an application operating system,and various input/output devices.

When the mobile device functions as a cellular transceiver, the mobiledevice can initiate and receive phone calls, send and receive data overa cellular network, identify cellular tower connections, and determinewhen and whether to switch cellular towers. Similarly, the mobile devicecan function as a wireless radio transceiver and send and received dataover a wireless network, e.g. a WiFi™ network. These radio-relatedfunctions can be performed in a baseband subsystem of the mobile device.The baseband subsystem can include a baseband processor and a basebandoperating system. The baseband processor can be an integrated circuit(IC) device (e.g., a Large Scale Integrated Circuit (LSI)) that performscommunication functions. The baseband processor can include, forexample, a Global System for Mobile Communications (GSM) modem. Thebaseband processor can be can be integrated with the applicationprocessor in a System-on-Chip (SoC).

SUMMARY

Methods, program products, and systems for selective locationdetermination are described. A mobile device can determine a location ofthe mobile device using various techniques. When there is a conflictbetween the locations determined using different techniques, the mobiledevice can select a most trustworthy location from the locations, anddesignate the most trustworthy location as a current location of themobile device. The mobile device can determine a first location of themobile device, which can be a coarse location determined using a cellidentifier (cell ID) of a cellular network. The mobile device candetermine a second location of the mobile device, which can be a finelocation determined using one or more media access control (MAC)addresses of one or more access points of a wireless local area network(WLAN). The first location and second location can be associated withconfidence values that can indicate trustworthiness of the firstlocation and second location.

The confidence value of the first location can be determined on aserver. The server can include a location data store that storeslocation identifiers (e.g., cell IDs), locations corresponding to thelocation identifiers, and confidence values corresponding to thelocations. The server can determine the location for a locationidentifier using raw locations received from location-aware mobiledevices that are associated with the location identifier (e.g., mobiledevices using a cell ID). The server can determine a confidence valuecorresponding to the location based on a population of the rawlocations, a stability of the location, a longevity of the location, anda freshness of the raw locations.

The mobile device can determine the second location using locations ofaccess points that are within a communication range of the mobiledevice. The mobile device can request and receive location informationof the access points, locations of other access points in a WLAN cell inwhich the access points are located, and locations of access points inWLAN cells neighboring the WLAN cell. The mobile device can identify aWLAN location of the mobile device using the received locationinformation and MAC addresses of the access points that are within acommunication range of the mobile device.

Techniques of selective location determination can be implemented toachieve the following example advantages. A mobile device can determinea location of the mobile devices using various reference points (e.g.,cell towers of a cellular communications network or access points of aWLAN) and locations stored in association with location identifiers(e.g., identifiers of the reference points). Each of the reference pointcan move. For example, a cell ID of a cell tower in one state or countrycan be reused for a cell tower in another state or country. One or moreaccess points can relocate (e.g., during a company relocation). If areference point moves, the location identifier associated with thereference point can become invalid, resulting in errors in result of thelocation determination. Using selective location determination, themobile device can select a location that is determined using the mosttrustworthy reference points, thus maximizing accuracy of the locationdetermination.

The details of one or more implementations of selective locationdetermination are set forth in the accompanying drawings and thedescription below. Other features, aspects, and advantages of selectivelocation determination will become apparent from the description, thedrawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an overview of techniques of selective location determination.

FIGS. 2A-2B illustrate example techniques of determining an access pointlocation from one or more raw locations.

FIG. 3A is a block diagram illustrating various subsystems of an examplemobile device implementing techniques of selective locationdetermination.

FIGS. 3B and 3C illustrate techniques for determining a WLAN location ofan example mobile device using access point locations.

FIG. 3D is a flowchart illustrating an example process of selectivelocation determination implemented on a mobile device.

FIG. 4A is a block diagram illustrating an example server implementingtechniques of selective location determination.

FIG. 4B is a flowchart illustrating an example process of selectivelocation determination implemented on a server.

FIG. 5 illustrates an example user interface for selective locationdetermination.

FIG. 6 is a block diagram of an example system architecture forimplementing the features and operations of selective locationdetermination on a server.

FIG. 7 is a block diagram of an example architecture of a mobile deviceimplementing the features and operations of selective locationdetermination.

FIG. 8 is a block diagram of an example network operating environmentfor a mobile device implementing the features and operations ofselective location determination.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION Overview of Selective Location Determination

FIG. 1 is an overview of techniques of selective location determination.Mobile device 100 can be a mobile device that implements the techniquesof selective location determination. Mobile device 100 can be located incurrent cell 102 of a cellular communication network, and withincommunication range of wireless access points 104, 106, 108, and 110 ofa WLAN.

Mobile device 100 can detect a cell ID of current cell 102 using abaseband subsystem of mobile device 100. Mobile device 100 can use thedetected cell ID to query a cell location data store that stores cellIDs and cell locations corresponding to the cell ID. Using the detectedcell ID, mobile device 100 can determine a cell location of cell 102 byperforming a look up in the cell location data store to identify acorresponding cell location (e.g., cell location 114). Thecorrespondence between cell location 114 and cell 102 is represented bydotted line 118. Cell location 114 can be a location calculatedstatistically based on usage information, e.g., location of mobiledevices that are, or have been, connected to cell tower 116. Celllocation 114 need not correspond precisely to a size or shape of anactual cell.

In the example of FIG. 1, cell location 114 does not accurately describea geographic location of cell 102. The inaccuracy can be caused by arecent move of equipment (e.g., a transceiver identified by the cell ID)of cell tower 116 from cell 122 to cell 102. Due to various reasons(e.g., latency in updating the cell location data store, etc.), usingthe cell ID detect from the baseband subsystem and the informationstored in the cell location data store, mobile device 100, determines(incorrectly) that mobile device is located at a first location (e.g.,cell location 114).

Mobile device 100 can detect one or more MAC addresses of access points104, 106, 108, and 110 in a WLAN using a WLAN subsystem of mobile device100. Access points 104, 106, 108, and 110 can be located within acommunication range of mobile device 100, and can be, but are notrequired to be, connected to mobile device 100 wirelessly. An accesspoint is located within a communication range of mobile device 100 whenwireless signals sent from one party (e.g., mobile device 100) duringcommunications between mobile device 100 and the access point can bereceived with sufficient signal to noise ratio by the other party (e.g.,the access point).

Using the detected MAC addresses, mobile device 100 can determine asecond location of mobile device 100. Mobile device 100 can include anaccess point location data store that stores MAC addresses and accesspoint locations corresponding to the MAC addresses. An access pointlocation can be a location of an access point that is determinedstatistically from usage data of the access point, e.g., by usinglocations of mobile devices that are, or have been, located withincommunication range of the access point. The access point location neednot correspond precisely to the actual geographic location of the accesspoint. Using the detected MAC addresses, mobile device 100 can identifyone or more access point locations (e.g., access point locations 124,126, 128, and 130) associated with the MAC addresses by performing alook up in the access point location data store using the detected MACaddresses. Using the identified access point locations 124, 126, 128,and 130, mobile device 100 can determine WLAN location 112 by performingtriangulation or other heuristic location calculations. WLAN location112 can be the second location of mobile device.

If the first location (e.g., cell location 114) and the second location(e.g., WLAN location 112) completely overlap (e.g., one locationcompletely encloses another) or partially overlap (e.g., one locationpartially intersects another), the first location and the secondlocation can confirm each other. Mobile device 100 can designate thelocation that has a smaller error margin (e.g., WLAN location 112) as acurrent location of mobile device 100.

If the first location and the second location conflict with each other(e.g., when the first location and the second location have nointersection), mobile device 100 can select one of the first locationand the second location and designate the selected location as thecurrent location of mobile device 100. The selection can be based onconfidence values associated with the first location and the secondlocation.

Cell location 114 of cell 102, as well as a confidence value associatedwith cell location 114, can be determined on a server, on a mobiledevice (e.g., mobile device 100), or on a distributed system thatincludes various data processing apparatus. For convenience, determiningcell location 114 and the confidence value will be described withrespect to a server that makes the determination. The confidence valuecan be stored in the cell location data store.

To select a most trustworthy location, mobile device 100 can compare theconfidence value associated with cell location 114 with a confidencevalue associated with WLAN location 112. Confidence value associatedwith WLAN location 112 can be determined using a specified base valueand a number of wireless access points detected by mobile device 100.The specified base value can be a value (e.g., “50”) that is associatedwith WLAN location 112 as long as WLAN location 112 can be extrapolated.Each of the wireless access points (e.g., access points 104, 106, 108,and 110) can be associated with a weight (e.g., “2”). In someimplementations, the confidence value associated with WLAN location 112can be the specified base value plus the number of access points timesthe weight.

If WLAN location 112 is associated with a confidence value that isgreater than the confidence value associated with cell location 114 andcell 102, WLAN location 112 can trump cell location 114. Mobile device100 can select WLAN location 112 and designate WLAN location 112 as thecurrent location of mobile device 100. If WLAN location 112 isassociated with a confidence value that is less than or equal to theconfidence value associated with cell location 114, mobile device 100can designate cell location 114 as the current location of mobile device100.

The confidence value associated with cell location 114 can be calculatedbased on usage information of cell tower 116. Calculating confidencevalue for cell location 114 will be described in further detail below.In the example of FIG. 1, cell location 114 can be associated with aconfidence value of 65 (e.g., on a 0-100 scale). If mobile device 100can identify eight access points based on which mobile device 100 candetermine the WLAN location, mobile device 100 can designate WLANlocation 112 as the current location of mobile 100, because theconfidence value of WLAN location 112 is 66. If mobile device 100 canidentify only seven access points, the confidence value of WLAN location112 is 64. Consequently, mobile device 100 can designate cell location114 as the current location of mobile device 100 since cell location 114has a greater confidence value.

A server can determine cell location 114 by extrapolating raw locationsreceived on the server. The raw locations can be submitted from one ormore location-aware mobile devices. A raw location can be a locationdetermined by a location-aware mobile device. The raw location caninclude a longitude, a latitude, optionally an altitude, and an errormargin. The location-aware mobile devices can determine the rawlocations using various technologies. For example, a location-awaremobile device can determine its raw location by using selective locationdetermination as described, by triangulating locations of wirelessaccess points or cell towers, or by using a global positioning system(e.g., GPS). The raw location can be associated with a cell ID (e.g.,cell ID associated with cell tower 106) of a cellular communicationnetwork when, at the time the raw location is determined, the mobiledevice determining the location is in the cell (e.g., served by celltower 106) identified by the cell ID. The location-aware mobile devicecan be connected to cell tower 106, or be assigned the cell ID of celltower 106 by the cellular network without being connected to cell tower106.

The location-aware mobile device can transmit the raw location and thecell ID of cell tower 106 to the server at the time the raw location isdetermined, or at another time. For example, the transmission can occurwhen the location-aware mobile device establishes a data connection withthe server upon a user request. The server can receive the raw locationand the cell ID of cell tower 106 transmitted from the mobile device,and associate the raw location with the cell ID of cell tower 106 as acell location. If multiple raw locations associated with the cell ID ofcell tower 106 are received, the server can extrapolate the celllocation, for example, by averaging the received raw locations,excluding extreme points of the received raw locations, and determiningan error margin. In general, a single raw location associated with thecell ID of cell tower 106 can determine a cell location of cell tower106. The more raw locations the server receives that are associated withthe cell ID of cell tower 106, the more reliable the extrapolated celllocation. The server can assign a high confidence value (e.g., “100” ona 0-100 scale) to indicate a high reliability.

The server can adjust the confidence value using various factors. Inaddition to using number of raw locations received, also referred to asa population of raw locations, the server can additionally oralternatively determine the confidence value using a longevity of thecell ID of cell tower 106 (e.g., a length of time that the cell ID hasbeen associated with a cell location), a stability of the cell ID ofcell tower 106 (e.g., a length of time that the location has remainedsubstantially unchanged), and a freshness of the locations (e.g., alength of time since the server received a last location update from amobile device). The confidence value can be proportional to one of or acombination of two or more of confidence factors (e.g., population,stability, longevity, and freshness). In some implementations, acombination of multiple confidence factors can be given more weight indetermining the confidence value. Cell location 114 can have arelatively low confidence value, for example, when cell tower 106recently moved from cell 122 to cell 102 (location unstable), or whencell tower 106 has remained inactive for a period of time during themove (received locations stale).

Cell location 114, access point locations 124, 126, 128 and 130, andWLAN location 112 are represented as circular areas in FIG. 1 andsubsequent figures. The circular area can each have a center that can berepresented by coordinates that can include a latitude, a longitude, andoptionally, an altitude. A radius of the circular area can represent anerror margin of a location, which can indicate a degree of uncertaintyof where a mobile device is actually located. The centers and radii ofcell location 114 and WLAN location 112 can be determined in variousways, as will be described in further detail below.

Cell location 114, access point locations 124, 126, 128 and 130, andWLAN location 112 can have various geometric shapes (e.g., an ellipse, apolygon, or a random geometric shape). The center of the variousgeometric shapes can be a centroid, a mean center, a center of a minimumbounding rectangle (MBR) of the random shape, a center of a smallestcircle that completely encloses the random shape, a center of a largestinscribed circle of the random shape, or a center defined using anygeometric or statistic (e.g., Monte Carlo) method.

The cell location data store and the access point location data storecan be hosted on mobile device 100, or remotely on the server, anddownloaded to mobile device 100 periodically through a data push fromthe server, or upon a request from mobile device 100. The locations ofvarious access points can be calculated using techniques described belowwith respect to FIGS. 2A and 2B.

FIGS. 2A-2B illustrate example techniques of determining an access pointlocation from one or more raw locations. For convenience, the techniqueswill be described in reference to a system that implements thetechniques.

FIG. 2A is an overview of techniques of determining an access pointlocation from one or more raw locations. A WLAN can be a radiocommunications network that includes a number of access points 205, 205a, and 205 b. Each of access points 205, 205 a, and 205 b can include ahardware device or computer software that can act as a communication hubfor wireless devices to connect to a wired network. Multiple accesspoints 205, 205 a, and 205 b can be distributed in an area (e.g., anoffice building or an airport).

Access point 205 can communicate with wireless devices (e.g., mobiledevices 208 and 210) using various communication protocols. In someimplementations, access point 205 can be an access point of a WiFi™network, which implements an Institute of Electrical and ElectronicsEngineers (IEEE) 802.xx based protocol (e.g., IEEE 802.11g). In someimplementations, access point 205 can be an access point of a worldwideinteroperability for microwave access (WiMAX) network, which implementsan IEEE 802.16 based protocol (e.g., IEEE 802.16-2004 or IEEE802.16e-2005). Access point 205 can have a communication range that canreach from location of access point 205 to anywhere from less than tenmeters to several hundred meters depending on factors includingconfiguration of access point 205 and physical surroundings. Multiplemobile devices 208 and 210 can connect to an access point when mobiledevices 208 and 210 and the access point are located within acommunication range of each other. Mobile devices 208 and 210 can selecta particular access point 205 to which mobile devices 208 and 210 canconnect based on various factors. For example, the selection can bebased on whether mobile device 208 is authorized to connect to accesspoint 205 a, or whether access point 205 a can provide the strongestsignal or highest signal to noise ratio for the wireless connection tomobile device 208.

The system can determine access point locations 215, 215 a, and 215 bthat are associated with access points 205, 205 a, and 205 b. Accesspoint locations 215, 215 a, and 215 b can be calculated such that theyindicate at what location mobile devices 208 connected to access points215, 215 a, and 215 b, or are within communication range of accesspoints 215, 215 a, and 215 b, respectively, are likely to be located.The system can make the determination based on raw locations receivedfrom mobile devices 208 that are connected to access points 205. Mobiledevices 208 can be location-aware mobile devices, for example,GPS-enabled mobile devices that have built-in, or be coupled with,receivers that can receive GPS signals and determine locations using theGPS signals.

Location-aware mobile devices 208 are represented as black triangles inFIG. 2A. When location-aware mobile devices 208 are connected to aparticular access point (e.g., access point 205 a), location-awaremobile devices 208 can transmit the raw locations of the devices toaccess point 205 a. Access point 205 a can relay the transmission, aswell as a location identifier of access point 205 a (e.g., a MAC addressof access point 205 a), to the system. The system can determine anestimated access point location 215 a where a mobile device 208 or 210connected to access point 205 a is most likely located. Mobile device210, represented as white triangles in FIG. 2A, can be mobile devicesthat are not GPS-enabled.

To calculate access point locations 215, the system can apply aniterative process (e.g., by performing a multi-pass analysis). Theiterative process can determine an access point location (e.g., accesspoint location 215 a) that is associated with an access point (e.g.,access point 205 a) as a circle. The circle can have a centroid thatcorresponds to an average geographic location calculated based onlocations of location-aware mobile devices 208 that are wirelesslyconnected to access point 205. The circle can have a radius thatcorresponds to an error margin, which can be determined by, for example,a distance between a location of a mobile device 208 and the averagegeographic location. The iterative process can be executed periodically(e.g., every six hours) to capture different wireless access usagepatterns during different hours of a day as well as to capture potentialmoves of access points 205.

The system can send information of access point locations 215 to mobiledevices, including mobile devices that are not GPS-enabled (e.g., mobiledevice 210), such that the receiving mobile devices can determineestimated locations (e.g., WLAN locations) of the receiving mobiledevices using access point locations 215. For example, if mobile device210 is located within communication range of access points 205, 205 a,and 205 b, the WLAN location of mobile device 210 can be estimated byusing access point locations 215, 215 a, and 215 b, which correspond toaccess points 205, 205 a, and 205 b respectively.

The server can selectively send one or more access point locations(e.g., access point locations 215, 215 a, and 215 b) to a mobile device(e.g., mobile device 210). Selectively sending access point locations tomobile device 210 can have an advantage of avoiding storing access pointlocations that are located remote to mobile device 210 and are thusunlikely to be used to determine a WLAN location of mobile device 210.The server can send access point locations of access points that are notimmediately within a communication range of mobile device 210, but areclose enough to mobile device 210, such that there is a sufficientlikelihood that mobile device 210 can move to a location where mobiledevice 210 can connect to these access points. To avoid sending a largeamount of location data to mobile device 210, the system can filteraccess point locations 215 such that only the location data of a limitednumber of access points (e.g., access point 205 a), rather than locationdata of every single access points that exists in the world, aretransmitted to mobile device 210.

To filter access point locations 215 and access points 205, the systemcan create geographic grid 200 that contain one or more WLAN cells 202.WLAN cell 202 can be a polygon having a substantially rectangular shape,the polygon corresponding to a geographic area identifiable ongeographic grid 200 by a latitude and a longitude of an identifyingpoint of the geographic area (e.g., a center, or a corner), and a size(e.g., a length measured in degrees of longitude, and a width measuredin degrees of latitude). Alternatively or additionally, WLAN cell 202can be defined using a relative distances from a reference WLAN cell ona two-dimensional plane. Each WLAN cell 202 can be used as a containerthat can contain a certain number of locations.

For example, WLAN cell 202 can be a rectangle whose length is 0.0005degrees meridian (approximately 56 meters) and whose width 0.0005degrees latitude (width in meters can vary depending on the latitude).WLAN cell 202 can be configured to contain a number (e.g., three) ofaccess point locations corresponding to access points. In someimplementations, WLAN cell 202 can contain access point location 215 ifthe center of access point location 215 is located within boundaries ofWLAN cell 202. Access point locations 215 can be selected from allaccess point locations 215 that are located in WLAN cell 202 based onone or more reliability factors.

A particular access point (e.g., access point 205 b) and the accesspoint location associated with the access point (e.g., access pointlocation 215 b) need not be located in a same WLAN cell 202. This canhappen, for example, when access point 205 b is located in a building inWLAN cell 202 a and most mobile devices 208 connected to access point205 b are located in another building in WLAN cell 202 b. In someimplementations, the system can ignore the actual location of accesspoint 205 b.

When mobile device 210 connects to an access point (e.g., access point205 a, whose associated access point location 215 a is located in WLANcell 202 c), mobile device 210 can receive a location update from thesystem. The location update can include all access point locations 215that are located in the same cell where access point location 115 a islocated (e.g., WLAN cell 202 c). The location update can further includeaccess point locations 215 that are located in other WLAN cells (e.g.,WLAN cell 202 a and WLAN cell 202 b) that are neighbors to WLAN cell 202c on geographic grid 200.

When mobile device 210 connects to access point 205 a, mobile device 210can detect other access points 205 (e.g., access point 205 b) that arelocated within communication range of mobile device 210. Mobile device210 can identify access point locations (e.g., access point locations215 a and 215 b) of the available access points. Mobile device 210 cancalculate a WLAN location of mobile device 210 using various algorithms.For example, when only one access point location 215 a is identified,mobile device 210 can designate access point location 215 a as the WLANlocation of mobile device 210.

When two or more access point locations 215 are identified, mobiledevice 210 can calculate its WLAN location using an iterative process(e.g., a multi-pass analysis). The iterative process can calculate anaverage geographic location of the access point locations, calculatedistances between the access point locations and the average geographiclocation, and exclude access point locations that are the farthest awayfrom the average location. Mobile device 210 can repeat the iterationsuntil an accuracy requirement is satisfied for determining a location ofmobile device 210. Mobile device 210 can designate the average locationas a current location of mobile device 210 and display the averagelocation on a map display device.

In some implementations, the location update received on mobile device210 from the system can include numerous neighboring cells such that asufficiently large area (e.g., one or two square kilometers) aroundaccess point location 215 a can be covered. Based on the location updatethat covers the large area, mobile device 210 can avoid having torequest frequent updates when mobile device 210 moves. Mobile device 210can have opportunities to receive updated access point locationinformation when, for example, mobile device 210 is idle or otherwisehas available communication bandwidth.

FIG. 2B illustrates example techniques of determining an access pointlocation from one or more raw locations in a three-dimensional space.Some location-aware mobile devices 208 (e.g., GPS-enabled devices) canidentify locations in a three-dimensional space. The locations can berepresented by latitudes, longitudes, and altitudes. Altitudes can beexpressed, for example, as elevation measured as a distance (e.g., inmeters) from sea level. Locating a mobile device in a three-dimensionalspace can be desirable when an altitude of the mobile device is used tolocate the mobile device. For example, altitude can be used to determineon which floor the mobile device is located in a high-rise building.Location of mobile device 208 in three-dimensional space can bedisplayed on a two-dimensional map with the elevation as an annotation,or on a three-dimensional map.

Mobile devices 208 can connect to access point 226. Mobile devices 208can be location-aware mobile devices that can transmit their locations,including latitude, longitude, and altitude coordinates to the system.The system can calculate an average geographic location based on thelatitude, longitude, and altitude coordinates received from mobiledevices 208. Three-dimensional space 224, having the average location asa center and an error margin as a radius, can be associated with accesspoint 226. Space 224 can represent a space that a mobile device islikely to be located when the mobile device is connected to access point226. In this specification, space 124 will be referred to as an accesspoint space.

The system can send information on access point space 224 to mobiledevices that request the information. The mobile devices receiving theinformation can use the information to determine their WLAN locations inthe three-dimensional space. The system can divide the three-dimensionalgeographic space into three-dimensional grid 220. Three-dimensional grid220 can include three-dimensional WLAN cells 222. Each three-dimensionalWLAN cell 222 can have a base that corresponds to a two-dimensional WLANcell (e.g., WLAN cell 202) of geographic grid 200. Eachthree-dimensional cell 222 can have a height (e.g., measured in meters)as a dimension. Access point space 224 can be referred to as beinglocated in WLAN cell 222 if the center of access point space 224 isinclude in WLAN cell 222.

The system can transmit information on access point space 224 andneighboring access point spaces based on three-dimensional WLAN cells222 of three-dimensional grid 220 to a mobile device (e.g., mobiledevice 210). Mobile device 210 can use the information to estimate aWLAN location of mobile device 210 in the three-dimensional space, anddisplay the estimated current location on a three-dimensional map.

Example Client-Side System and Process of Location Determination

FIG. 3A is a block diagram illustrating various subsystems of examplemobile device 300 implementing techniques of selective locationdetermination. Mobile device 300 can be a mobile device such as mobiledevice 100 of FIG. 1. Mobile device 300 can include applicationsubsystem 302, baseband subsystem 320, and WLAN subsystem 330.Application subsystem 302 can be configured to perform traditionalcomputer functions, such as executing application programs, storingvarious data, and displaying digital images. Application subsystem 302can include application processor 304 and application operating system306.

Baseband subsystem 320 can include a baseband processor, cellulartransceiver 322, and baseband operating system 324 that manages variousfunctions of baseband subsystem 320. Baseband subsystem 320 can beconfigured to monitor a current cell ID. Monitoring a current cell IDcan include detecting that a current cell ID has changed. Basebandsubsystem 320 can notify application subsystem 320 when a current cellID changes. Baseband subsystem 320 can be configured to submit thecurrent cell ID to application subsystem 302 upon receiving a requestfrom application subsystem 302.

When application subsystem 302 receives the current cell ID frombaseband subsystem 320, application subsystem 302 can determine a celllocation using cell location calculator 308. Cell location calculator308 can query cell location data store 314 using the received currentcell ID and retrieve a cell location associated with the receivedcurrent cell ID. Cell location data store 314 can store cell locations,associating cell IDs, and associating confidence values. Cell locationdata store 314 can reside on mobile device 300, reside on a serverremotely, or be distributed among various mobile devices and servers.

If cell location calculator 308 fails to retrieve a cell locationcorresponding to the received current cell ID, cell location calculator308 can request an update from a remote server through a communicationnetwork using a cell information update request. The request can includethe received current cell ID, and can be made through data communicationfunctions of baseband subsystem 320 or data communication functions ofWLAN subsystem 330. If the server fails to respond, or the responsefails to identify a cell location corresponding to the received currentcell ID, mobile device 300 can determine a current location using a WLANlocation. For example, mobile device 300 can provide an empty value asthe cell location; the empty cell location can have a confidence valueof zero.

WLAN subsystem 330 can include a WLAN processor, wireless transceiver334, and WLAN operating system 332 that manages various functions ofWLAN subsystem 330. WLAN subsystem 330 can be configured to scanwireless communication channels to detect access points that are locatedwithin a communication range of mobile device 300. Detecting the accesspoints can include detecting MAC addresses associated with the accesspoints. WLAN subsystem 330 can be configured to submit the detected MACaddresses to application subsystem 302 upon receiving a request fromapplication subsystem 302.

When application subsystem 302 receives the MAC addresses from WLANsubsystem 330, application subsystem 302 can determine a WLAN locationusing WLAN location calculator 312. WLAN location calculator 312 canquery access point location data store 316 using the received MACaddresses, and retrieve one or more access point locations (e.g., accesspoint locations 124, 126, 128, and 130 shown in FIG. 1). Access pointlocation data store 316 can store access point locations associated withthe MAC addresses. Access point location data store 316 can reside onmobile device 300, reside on a server remotely, or be distributed amongvarious mobile devices and servers.

If WLAN location calculator 312 fails to retrieve an access pointlocation corresponding to a MAC address, point location calculator 312can request an update from a remote server through a communicationnetwork using a cell information update request. The request can includethe received MAC addresses, and can be made through data communicationfunctions of baseband subsystem 320 or data communication functions ofWLAN subsystem 330.

WLAN location calculator 312 can determine a WLAN location (e.g., WLANlocation 112) of mobile device 300 using the access point locationsretrieved from access point location data store 316. Determining theWLAN location can include triangulating the WLAN location from theaccess point locations. Alternatively or additionally, WLAN locationcalculator 312 can determine the WLAN location of mobile device 300using an iterative process. The iterative process will be describedbelow with respect to FIGS. 3B and 3C. Alternatively or additionally,WLAN location calculator 312 can determine a confidence value of thedetermined WLAN location.

Application subsystem 302 also includes conflict resolver 310. If thecell location determined using cell location calculator 308 conflictswith the WLAN location determined using access point location calculator312, conflict resolver 310 can resolve the conflict using the confidencevalue associated with the cell location and the confidence valueassociated with the access point location. Conflict resolver 310 canselect a location that has a higher confidence value as the currentlocation of mobile device 300. If the cell location and the WLANlocation has a same confidence value, conflict resolver 310 can selecteither the cell location or the WLAN location as the current location ofmobile device 300.

FIG. 3B provides an overview of techniques for determining a WLANlocation of example mobile device 340 using access point locations. Anexample section of a wireless communications network that includesaccess points 342 a-d is illustrated. Mobile device 340 can be a mobiledevice such as mobile device 100 of FIG. 1.

Mobile device 340 can be wirelessly connected to access point 342 a.From access point 342 a, mobile device 340 can receive data thatincludes information on access point locations (including access pointlocations 342 a-d) or access point spaces of neighboring access points.Mobile device 340 can store the received data in a access point locationdata store (e.g., access point location data store 316). The accesspoint location data store can be hosted on a storage device of mobiledevice 340. The stored data can be updated periodically or upon request.

In the example shown, mobile device 340 is connected to access point 342a. In addition, mobile device 340 is located within communication rangesto access points 342 b, 342 c, and 342 d. Mobile device 340 can identifyaccess points 342 a, 342 b, 342 c, and 342 d using a wirelesscommunication protocol of the WLAN (e.g., IEEE 802.11g). Access points342 a-d can be identified by MAC addresses of the access points or otheridentifiers.

Mobile device 340 can identify access point locations 344 a-d that areassociated with access points 104, 106, 108, and 110, respectively.Identifying access point locations 344 a-d can include retrieving theaccess point locations 344 a-d from access point data store 316. In someimplementations, mobile device 340 can request from a server the accesspoint locations 344 a-d by sending to the server identifiers of accesspoints 342 a-d.

Based on access point locations 342 a-d, mobile device 340 can executean iterative process (e.g., a multi-pass analysis) on the access pointlocations 124, 126, 128, and 130. The iterative process can produce WLANlocation 346, which can be an estimate of a current geographic locationof mobile device 340. WLAN location 346 can be a geographic space whenthree-dimensional location information is utilized.

FIG. 3C is a flowchart illustrating example process 350 of determining aWLAN location of mobile device 100. Mobile device 100 can determine theWLAN location using a set of access point locations (e.g., access pointlocations 124, 126, 128, and 130) retrieved from access point locationdata store 316.

Mobile device 100 can calculate (352) an average geographic locationusing the access point locations in the set of access point locations.Calculating the average geographic location can include calculating anaverage of latitudes, longitudes, and altitudes of the access pointlocations in the set, and designating a point specified by thecalculated average latitude, longitude, and altitude as the averagegeographic location. In some implementations, calculating the averagegeographic location can include designating a point specified by amedian latitude, median longitude, and median altitude of the accesspoint positions in the set as the average geographic location.

Mobile device 100 can calculate (354) distances between the access pointlocations in the set and the average geographic location. In someimplementations, mobile device 100 can calculate a linear distancebetween each of the access point locations in the set and the averagegeographic location in Euclidean space. In some implementations, mobiledevice 100 can calculate a geodesic distance between each of the accesspoint locations in the set and the average geographic location, takingcurvature of the earth into consideration.

The distances calculated in stage 354 can be represented as a radiusassociated with a centroid. The centroid can be the average geographiclocation calculated in stage 352, which can be a center of a circle. Theradius of the circle can be determined based on at least one distancebetween an access point location in the set of access point locationsand the average geographic location. In some implementations, the radiuscan equal to the longest distance between the average geographiclocation and an access point location in the set. In someimplementations, the radius can be a radius of a circle, such that, whenthe circle is drawn using the radius and the average geographic locationas a center, the circle can enclose a specified percentage (e.g., 80percent) of the access point locations in the set. The radius canrepresent a margin of error beyond which an estimation of a location ofa mobile device that is not GPS-enabled is unlikely to be statisticallymeaningful.

Mobile device 100 can exclude (356) from the set at least one accesspoint location based on a distance between the average location and theaccess point location. In some implementations, mobile device 100 canexclude access point locations whose distances to the average geographiclocation exceed a threshold distance. In each pass of the multi-passanalysis, the system can increase an accuracy of the estimated averagegeographic location by excluding access point locations that appear tobe located far away from a concentration (e.g., a cluster) of accesspoint locations. An access point location that is located far away froma cluster of locations can be less useful in estimating the WLANlocation, and can be excluded.

In various implementations, the threshold distance can vary from onepass to a next pass. In some implementations, the threshold distance canbe a distance to the average geographic location within which a certainpercentage (e.g., 95 percent) of locations in the set are located. Insome implementations, the threshold distance can be a value that varieswith each pass (e.g., 250 meters for the first pass, 150 meters for thesecond pass, etc.). Mobile device 100 can exclude at least one accesspoint location from the set when the distance between the averagegeographic location and the access point location exceeds the thresholddistance.

Mobile device 100 can repeat stages 352, 354, and 356 of process 350until an exit condition is satisfied. The system can determine (358)whether an exit condition is satisfied for terminating the repetition.In some implementations, the exit condition can be satisfied when anumber of repetitions reach a threshold number (e.g., 10 times). Thethreshold number, as well as the percentage of locations to exclude, canbe configurable to fine tune a balance between certainty (e.g., a WLANlocation having a larger area can result in more confidence that amobile device in the cell is actually located at the WLAN location) andaccuracy (e.g., a smaller presence area can result in more accuratelocation of a mobile device).

In some implementations, the exit condition of stage 358 can besatisfied when the WLAN location has an area that is sufficiently small.The repetition of stages 352, 354, and 356 can terminate when the radiusof the WLAN location reaches below a threshold radius. For example, thethreshold radius can be 8-10 meters.

Mobile device 100 can designate (360) a geographic area as a WLANlocation of mobile device 100. The geographic area can be a circlehaving a center based on the average geographic location and a radiusbased on at least one calculated distance. The center can be representedin latitudes and longitudes. In some implementations where distances arecalculated in three-dimensional spaces, the center can further berepresented in an altitude.

FIG. 3D is a flowchart illustrating example process 370 of selectivelocation determination implemented on mobile device 100.

Mobile device 100 can determine (372) a first location (e.g., a celllocation) of mobile device 100 using a first location criterion.Determining the first location using the first location criterion caninclude determining the first location using a first subsystem (e.g., abaseband subsystem) of mobile device 100. The first location can beassociated with a first confidence value. Determining the first locationcan include determining a cell ID of mobile device 100 using a basebandsubsystem of the mobile device and identifying the first location from afirst location data store (e.g., cell location data store 314) using thecell ID. The first location data store can store one or more cell IDs,one or more cell locations that correspond to the cell IDs, and one ormore first confidence values that correspond to the cell locations. Thefirst location data store, when hosted on mobile device 100, can bepopulated and updated by a push from the server, or by a pull responsiveto a user request.

Mobile device 100 can determine (374) a second location (e.g., a WLANlocation) of mobile device 100 using a second location criterion.Determining the second location using the second location criterion caninclude determining the second location using a second subsystem (e.g.,a WLAN subsystem) of mobile device 100. The second location can beassociated with a second confidence value. Determining the secondlocation can include using the WLAN subsystem of mobile device 100 todetect one or more MAC addresses of one or more wireless access pointslocated within a communication range of mobile device 100. Mobile device100 can identify a set of access point locations from a second locationdata store (e.g., access point location data store 316) using the one ormore MAC addresses. The second location data store can store the MACaddresses of the one or more wireless access points and the access pointlocations corresponding to the MAC addresses. Mobile device 100 candetermine the second location using the set of access point locations.Determining the second location of mobile device 100 can includedetermining a WLAN location of mobile device 100 using example process350 as described above with respect to FIG. 3C.

Determining the second confidence value (e.g., confidence value of theWLAN location) can include specifying a base confidence value. Mobiledevice 100 can calculate a number of identified access point locationsand use the number of identified access point locations to determine thesecond confidence value.

Each of the first and second locations can include a latitude, alongitude, and optionally, an altitude coordinate.

Based on the first confidence value and the second confidence value,mobile device 100 can designate (376) one of the first location and thesecond location as the current location of mobile device 100.Designating one of the first location and the second location as thecurrent location of mobile device 100 can include detecting a conflictbetween the first location and the second location. A conflict can occurwhen the first location does not overlap the second location. Mobiledevice 100 can determine that the first confidence value (e.g., theconfidence value of the cell location) equals to or exceeds the secondconfidence value (e.g., the confidence value of the WLAN location). Uponthe determining, mobile device 100 can designate the first location asthe current location of mobile device 100. If the first confidence valuedoes not equal to or exceed the second confidence value, mobile device100 can designate the second location as the current location of mobiledevice 100.

Example Server-Side System and Process of Location Determination

FIG. 4A is a block diagram illustrating an example server 400implementing techniques of selective location determination. Server 400can include one or more processors, one or more memory devices storinginstructions and data, and other hardware or software components. Server400 can determine access point locations associated with WLAN accesspoints, cell locations associated with cell IDs, and confidence valuesof the cell locations. The determination can be made using varioussubsystems of server 400.

Server 400 can include data collection subsystem 402 that can receivedata from various location-aware mobile devices. The data from alocation-aware mobile device can include location identifiers (e.g., MACaddresses or cell IDs), and raw locations. A raw location can beassociated to a location identifier, and indicate a location of thelocation-aware mobile device, as determined by the location-aware mobiledevice, when the location-aware mobile device was connected to, or waslocated in communication range of, a wireless access gateway (e.g., anaccess point or a cell tower) represented by the location identifier.

Data collection subsystem 402 can include data reception component 404,which can receive data transmitted from the location-aware mobiledevices. Data collection subsystem 402 can include data indexingcomponent 406. Data indexing component 406 can perform variousprocessing on the received data points (e.g., raw locations and locationidentifiers). For example, data indexing component 406 can sortlatitudes, longitudes, and altitudes based on cell IDs. Data indexingcomponent 406 can also group data into sets based on time periods. Forexample, a new set of received locations can be created for aconfigurable period of time (e.g., six hours or one day) for aparticular cell ID or a MAC address.

Data indexing component 406 can create sets of location identifiers andraw locations associated with the location identifiers, and store theset in raw location data store 410. Raw location data store 410 canstore current and historical raw locations and location identifiers ofvarious mobile devices 108. Raw location data store 410 can beimplemented, for example, using an ad-hoc database, relational database,or object-oriented database. Raw location data store 410 can be hostedlocally or remotely in relation to server 400.

Location server 400 can include location calculation subsystem 414 thatcan determine cell locations or access point locations to be associatedwith the location identifiers, and determine location confidence valuesto be associated with the locations. Location calculation subsystem 414can include location calculator 416, which can be used to calculate anaverage geographic location in sets of data points (including rawlocations for cell towers or access points) in raw location data store410, calculate distances between the average geographic location and rawlocations of various data points, and exclude raw locations from thesets for further computation.

The data points in raw location data store 410 can be grouped as varioussets; each set can include one or more raw locations corresponding to alocation identifier (e.g., a cell ID or a MAC address). Locationcalculator 416 can perform the calculations for each set (e.g., a set ofraw locations associated with a cell ID), until an exit condition isreached for the set. Location calculator 416 can determine a celllocation (including a cell space) for each cell ID, and an access pointlocation (including an access point space) for each access point.

Location calculation subsystem 414 can include confidence valuecalculator 418. Confidence value calculator 418 can determine confidencevalues for each location (e.g., each cell location). The determinationof confidence values can be based on population, stability, longevity,and freshness. The population, stability, longevity, and freshness canbe determined based on data mined from raw location data store 410. Forexample, confidence value calculator 418 can determine freshness of aparticular cell ID by identifying a last location update on theparticular cell ID in raw location data store 410 (e.g., by checkingtimestamps of when raw locations associated with the cell ID weresubmitted).

Confidence value calculator 418 can include various rules fordetermining confidence values based on population, stability, longevity,and freshness. An example freshness based rule can provide that, forexample, if the last raw location update for a cell ID occurred athreshold time ago (e.g., 90 days ago), the confidence value can be setto a first value (e.g., “50” on a 0-100 scale). An example populationbased rule can provide that if a number of raw locations for the cell IDsatisfies a first threshold population (e.g., 100 raw locations for thecell ID are stored in raw location data store 410), the confidence valuecan be adjusted to a second value (e.g., “80” on a 0-100 scale). Anotherexample population based rule can provide that if a number of rawlocations for the cell ID satisfies a second threshold population (e.g.,25 raw locations for the cell ID are stored in raw location data store410), the confidence value can be adjusted to a third value (e.g., “65”on a 0-100 scale). A third example population based rule can providethat if a number of raw locations for the cell ID does not satisfy athird threshold population (e.g., 25 raw locations for the cell ID arestored in raw location data store 410), the confidence value can be setto a third value (e.g., “50” on a 0-100 scale), regardless of thefreshness the locations.

Locations determined by location calculation subsystem (e.g., the celllocations and access point locations), as well as the confidence valuesassociated with the locations, can be stored in location data store 420.Location data store 420 can store the cell locations and access pointlocations using latitude, longitude, and optionally, altitude of thecell locations and access point locations. Location calculationsubsystem 414 can update location data store 420 periodically (e.g.,daily). Location data store 420 can include an access point locationdata store (e.g., access point location store 316 of FIG. 3A) and a celllocation data store (e.g., cell location store data 314 of FIG. 3A).

Server 400 can distribute data stored in location data store 420 usingdata distribution subsystem 430. Data distribution subsystem 430 cansend information of cell locations, access point locations, andcorresponding confidence values to mobile devices (e.g., mobile device100) upon request, through broadcasting, or using various pushtechnology without receiving requests from the mobile devices. Forexample, data distribution subsystem 430 can push a new set of accesspoint locations to mobile device 100 if mobile device 100 has traveledto a WLAN grid that can indicate that mobile device 100 will enter ageographic area that includes access points whose access point locationsnot already known to mobile device 100.

In some implementations, data distribution subsystem 430 can sendmultiple access point locations to mobile device 100 in a singletransmission session. To reduce the number of access point locationtransmissions to the mobile device 100 (each of which can consumecommunication bandwidths of mobile device 100), data distributionsubsystem 430 can use neighbor locator 432 to locate WLAN cells thatneighbor the current WLAN cell in which mobile device 100 is located.Neighboring WLAN cells can include, for example, a number of WLAN cellssurrounding the WLAN cell in which mobile device 100 is located suchthat the total area of the WLAN cell and the surrounding WLAN cellscover a geographic region that has a specified area (e.g., one or twosquire kilometers).

Sending access point locations of access points in multiple WLAN cells(e.g., 400 WLAN cells) to mobile device 100 can moderate the number oftransmissions when mobile device 100 moves across WLAN cells. In suchimplementations, data distribution subsystem 430 only needs to send anupdate to mobile device 100 when mobile device 100 moves or is about tomove out of all WLAN cells whose access point locations have beenpreviously sent to mobile device 100.

FIG. 4B is a flowchart illustrating example process 440 of selectivelocation determination implemented on a server. For convenience, process440 will be described in reference to server 400 that implements process440.

Server 400 can receive (442) a set of raw locations from one or morelocation-aware mobile devices located in a cell of a cellularcommunications network. Each raw location can include a latitude, alongitude, and optionally, an altitude. The raw location can beassociated with a location identifier (e.g., a cell ID of the cell).

Server 400 can determine (444) a cell location to be associated with thecell using the set of raw locations. Determining the cell location caninclude performing an iterative analysis of the raw cell locations,including multiple passes of averaging the raw locations and excludingoutliers.

Server 400 can determine (446) a confidence value of the cell location,the confidence value can be based on a number of raw locations in theset of raw locations. In some implementations, the confidence value canbe proportional to the number of raw locations in the set of rawlocations. Determining the confidence value can include adjusting theconfidence value based on a stability of the cell location, thestability including a length of time during which the cell location issubstantially unchanged.

The cell location for a cell can vary, for example, at different hoursof the day, or for different days of a week. The variance can reflect ausage pattern and location pattern of the location-aware mobile devices.For example, during commute hours, the raw locations submitted by thelocation-aware mobile devices can concentrate along highways. Duringbusiness hours of weekdays, the raw locations can concentrate aroundoffice buildings. During weekends, the raw locations can have adispersed pattern. The cell locations calculated based on the rawlocations therefore can vary, if a cell location is calculated every sixhours or each day. The variance of the cell locations; however, cangenerally be limited to within an area of a few kilometers (thatcorresponding to a communication range of a cell tower). The celllocation, therefore, is substantially unchanged. The cell location canbe stable when the cell location has changed, and the location change iswithin a specified tolerance range. The tolerance range can correspondto the communication range of the cell tower. The cell location canchange substantially when a cell tower moves long distance (e.g., fromnorthern California to southern California).

In some implementations, determining the confidence value can includeadjusting the confidence value based on a freshness of the rawlocations, the freshness including a length of time that has elapsedsince a last raw location of the raw locations was received.

Server 400 can provide (448) the cell location in association with theconfidence value to a mobile device (e.g., mobile device 100). Providingthe cell location in association with the confidence value can includepushing the cell location association with the confidence value tomobile device in response to a change of confidence value.

Example User Interfaces of Selective Location Determination

FIG. 5 illustrates an example user interface of selective locationdetermination. In FIG. 5, example map 502 of a geographic area isdisplayed on mobile device 500. Mobile device 500 can be a mobile devicesuch as mobile device 100 of FIG. 1. In some implementations, mobiledevice 500 can display map 502 on touch sensitive display 530 of mobiledevice 500. Map 502 can be displayed, for example, when a user selects amap object to view mapping and location based services. In someimplementations, objects, such as a map object, can be selected by voiceactivation. Search bar 504 and bookmarks list object 506 can bedisplayed at the top of map 502. Below the bottom of the map one or moredisplay objects can be displayed, for example, search object 508,directions object 510, map view object 512, and current location object514.

Search bar 504 can be used to find an address or other location on themap. For example, a user can enter their home address in search bar 504,and the region containing the address would be displayed on map 502.Bookmarks list object 506 can, for example, bring up a Bookmarks listthat contains addresses that are frequently visited, such as a user'shome address. The Bookmarks list can also, for example, contain specialbookmarks such as the current location (e.g. the current location ofmobile device 500).

Search object 508 can be used to display search bar 504 and other maprelated search menus. Directions object 510 can, for example, bring up amenu interface that allows the user to enter a start and end location.The interface can then display information (e.g., directions and traveltime for a route from the start location to the end location). Map viewobject 512 can bring up a menu that allows the user to select displayoptions for map 502. For example, map 502 can be changed from black andwhite to color, the background of the map can be changed, or the usercan change the brightness of the map.

Current location object 514 can allow the user to see geographic area516 on map 502 indicating where device 500 is currently located.Geographic area 516 can correspond to a current location, determinedusing selective location determination techniques mobile device 500. Aradius of geographic area 516 can be determined based on an error marginof a cell location (e.g., cell location 114 shown in FIG. 1), if mobiledevice selects cell location as the current location based on confidencevalue associated with cell location and an access point location (e.g.,access point location 112 shown in FIG. 1).

The radius of geographic area 516 can be determined based on an errormargin of the access point location, if mobile device selects accesspoint location as the current location based on confidence valuesassociated with the cell location and the access point location. Aspecial current location bookmark can be placed in the Bookmarks listwhen the current location object 514 is selected. If the special currentlocation bookmark was previously set in the Bookmarks list, the oldbookmark information can, for example, be replaced with the new currentlocation information.

In some implementations, the special current location bookmark can betied to the centroid of geographic area 516. That is, the specialcurrent location bookmark can include the coordinates for the centroidof geographic area 516. Geographic area 516 can be based on locationdata determined or estimated using location instructions stored in amemory device of mobile device 500. Geographic area 516 can, forexample, be depicted by a circle, rectangle, square, hexagon, or otherenclosed region with crosshairs, or some other distinctive element todifferentiate geographic area 516 from map 502.

In some implementations, geographic area 516 can indicate a region inwhich mobile device 500 is determined or estimated to be located, andthe geographic area may not necessarily be centered on the actualcurrent position of mobile device 500. In this example, mobile device500 may be located off-center within the geographic area. In anotherexample, geographic area 516 can be centered on an estimated currentposition of mobile device 500.

Mobile device 500 can, for example, center the map view on geographicarea 516 when the current location object 514 is tapped or otherwiseselected. In some implementations, the zoom level of map 502 can beadjusted based on the accuracy or precision of the location data or thetechnology, system, or service that provided the location data. Forexample, map 502 can be zoomed out when mobile device 500 cannot receiveGPS signals for lower accuracy and uses access point data to determineits location. Map 502 can be zoomed in for higher accuracy if mobiledevice 500 is capable of using GPS location data to determine itscurrent location. In some implementations, the zoom level can be basedon the velocity of mobile device 500 (e.g., the map can be zoomed out athigher velocities and zoomed in when mobile device 500 is not moving). Acombination of accuracy or precision and velocity can also be used.

If all methods for retrieving location-based data fail (e.g., whenmobile device 500 is not within communication range of any access point,and does not have a current cell ID), and there are no other systems orservices available for determining or estimating the current position ofmobile device 500, an error can be displayed to the user and nogeographic area is displayed on map 502. The error can, for example,contain a message to the user informing them of the failure and thepossible reason or reasons for the failure.

Current location object 514 can be selected, for example, to activatethe estimating and displaying of geographic area 516 on map 502, to getdirections to or from the estimated current location (i.e., the centroidof geographic area 516), to send the estimated current location ofmobile device 500 to a friend (e.g., such that the friend can go to thesame location), or to create a bookmark for the estimated currentlocation.

Example Server Architecture

FIG. 6 is a block diagram of an example system architecture 600 forimplementing the features and operations of selective locationdetermination on a server. Other architectures are possible, includingarchitectures with more or fewer components. In some implementations,architecture 600 includes one or more processors 602 (e.g., dual-coreIntel® Xeon® Processors), one or more output devices 604 (e.g., LCD),one or more network interfaces 606, one or more input devices 608 (e.g.,mouse, keyboard, touch-sensitive display) and one or morecomputer-readable mediums 612 (e.g., RAM, ROM, SDRAM, hard disk, opticaldisk, flash memory, etc.). These components can exchange communicationsand data over one or more communication channels 610 (e.g., buses),which can utilize various hardware and software for facilitating thetransfer of data and control signals between components.

The term “computer-readable medium” refers to any medium thatparticipates in providing instructions to processor 602 for execution,including without limitation, non-volatile media (e.g., optical ormagnetic disks), volatile media (e.g., memory) and transmission media.Transmission media includes, without limitation, coaxial cables, copperwire and fiber optics.

Computer-readable medium 612 can further include operating system 614(e.g., Mac OS® server, Windows® NT server), network communication module616, database interface 620, data collection module 630, datadistribution module 640, and location calculation subsystem 650. Datacollection module 630, data distribution module 640, and locationcalculation subsystem 650 can be used to implement functions of datacollection subsystem 402, data distribution subsystem 430, and locationcalculation subsystem 414, respectively, as described in reference toFIG. 4A. Operating system 614 can be multi-user, multiprocessing,multitasking, multithreading, real time, etc. Operating system 614performs basic tasks, including but not limited to: recognizing inputfrom and providing output to devices 606, 608; keeping track andmanaging files and directories on computer-readable mediums 612 (e.g.,memory or a storage device); controlling peripheral devices; andmanaging traffic on the one or more communication channels 610. Networkcommunications module 616 includes various components for establishingand maintaining network connections (e.g., software for implementingcommunication protocols, such as TCP/IP, HTTP, etc.). Database interface620 can include interfaces to one or more databases (e.g., raw locationdata store 410 and location data store 420) on a file system. Thedatabases can be organized under a hierarchical folder structure, thefolders mapping to directories in the file system.

Architecture 600 can be included in any device capable of hosting adatabase application program. Architecture 600 can be implemented in aparallel processing or peer-to-peer infrastructure or on a single devicewith one or more processors. Software can include multiple softwarecomponents or can be a single body of code.

The described features can be implemented advantageously in one or morecomputer programs that are executable on a programmable system includingat least one programmable processor coupled to receive data andinstructions from, and to transmit data and instructions to, a datastorage system, at least one input device, and at least one outputdevice. A computer program is a set of instructions that can be used,directly or indirectly, in a computer to perform a certain activity orbring about a certain result. A computer program can be written in anyform of programming language (e.g., Objective-C, Java), includingcompiled or interpreted languages, and it can be deployed in any form,including as a stand-alone program or as a module, component,subroutine, a browser-based web application, or other unit suitable foruse in a computing environment.

Suitable processors for the execution of a program of instructionsinclude, by way of example, both general and special purposemicroprocessors, and the sole processor or one of multiple processors orcores, of any kind of computer. Generally, a processor will receiveinstructions and data from a read-only memory or a random access memoryor both. The essential elements of a computer are a processor forexecuting instructions and one or more memories for storing instructionsand data. Generally, a computer will also include, or be operativelycoupled to communicate with, one or more mass storage devices forstoring data files; such devices include magnetic disks, such asinternal hard disks and removable disks; magneto-optical disks; andoptical disks. Storage devices suitable for tangibly embodying computerprogram instructions and data include all forms of non-volatile memory,including by way of example semiconductor memory devices, such as EPROM,EEPROM, and flash memory devices; magnetic disks such as internal harddisks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, ASICs (application-specific integrated circuits).

To provide for interaction with a user, the features can be implementedon a computer having a display device such as a CRT (cathode ray tube)or LCD (liquid crystal display) monitor for displaying information tothe user and a keyboard and a pointing device such as a mouse or atrackball by which the user can provide input to the computer.

The features can be implemented in a computer system that includes aback-end component, such as a data server, or that includes a middlewarecomponent, such as an application server or an Internet server, or thatincludes a front-end component, such as a client computer having agraphical user interface or an Internet browser, or any combination ofthem. The components of the system can be connected by any form ormedium of digital data communication such as a communication network.Examples of communication networks include, e.g., a LAN, a WAN, and thecomputers and networks forming the Internet.

The computer system can include clients and servers. A client and serverare generally remote from each other and typically interact through anetwork. The relationship of client and server arises by virtue ofcomputer programs running on the respective computers and having aclient-server relationship to each other.

Example Mobile Device Architecture

FIG. 7 is a block diagram of an example architecture 700 of a mobiledevice implementing the features and operations of selective location.The mobile device (e.g., mobile device 100) can be, for example, ahandheld computer, a personal digital assistant, a cellular telephone,an electronic tablet, a network appliance, a camera, a smart phone, anenhanced general packet radio service (EGPRS) mobile phone, a networkbase station, a media player, a navigation device, an email device, agame console, or a combination of any two or more of these dataprocessing devices or other data processing devices.

The mobile device can include a memory interface 702, one or more dataprocessors, image processors and/or central processing units 704, and aperipherals interface 706. The memory interface 702, the one or moreprocessors 704 and/or the peripherals interface 706 can be separatecomponents or can be integrated in one or more integrated circuits. Thevarious components in the mobile device 100 can be coupled by one ormore communication buses or signal lines.

Sensors, devices, and subsystems can be coupled to peripherals interface706 to facilitate multiple functionalities. For example, motion sensor710, light sensor 712, and proximity sensor 714 can be coupled toperipherals interface 706 to facilitate orientation, lighting, andproximity functions of the mobile device. Location processor 715 (e.g.,GPS receiver) can be connected to peripherals interface 706 to providegeopositioning. Electronic magnetometer 716 (e.g., an integrated circuitchip) can also be connected to peripherals interface 706 to provide datathat can be used to determine the direction of magnetic North. Thus,electronic magnetometer 716 can be used as an electronic compass.Accelerometer 717 can also be connected to peripherals interface 706 toprovide data that can be used to determine change of speed and directionof movement of the mobile device.

Camera subsystem 720 and an optical sensor 722, e.g., a charged coupleddevice (CCD) or a complementary metal-oxide semiconductor (CMOS) opticalsensor, can be utilized to facilitate camera functions, such asrecording photographs and video clips.

Communication functions can be facilitated through one or more wirelesscommunication subsystems 724, which can include radio frequencyreceivers and transmitters and/or optical (e.g., infrared) receivers andtransmitters. The specific design and implementation of thecommunication subsystem 724 can depend on the communication network(s)over which the mobile device is intended to operate. For example, themobile device may include communication subsystems 724 designed tooperate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi orWiMax network, and a Bluetooth network. In particular, the wirelesscommunication subsystems 724 may include hosting protocols such that thedevice may be configured as a base station for other wireless devices.

Audio subsystem 726 can be coupled to a speaker 728 and a microphone 730to facilitate voice-enabled functions, such as voice recognition, voicereplication, digital recording, and telephony functions.

I/O subsystem 740 can include a touch screen controller 742 and/or otherinput controller(s) 744. Touch-screen controller 742 can be coupled to atouch screen 746 or pad. Touch screen 746 and touch screen controller742 can, for example, detect contact and movement or break thereof usingany of a plurality of touch sensitivity technologies, including but notlimited to capacitive, resistive, infrared, and surface acoustic wavetechnologies, as well as other proximity sensor arrays or other elementsfor determining one or more points of contact with touch screen 746.

Other input controller(s) 744 can be coupled to other input/controldevices 748, such as one or more buttons, rocker switches, thumb-wheel,infrared port, USB port, and/or a pointer device such as a stylus. Theone or more buttons (not shown) can include an up/down button for volumecontrol of speaker 728 and/or microphone 730.

In one implementation, a pressing of the button for a first duration maydisengage a lock of the touch screen 746; and a pressing of the buttonfor a second duration that is longer than the first duration may turnpower to the mobile device on or off. The user may be able to customizea functionality of one or more of the buttons. The touch screen 746 can,for example, also be used to implement virtual or soft buttons and/or akeyboard.

In some implementations, the mobile device can present recorded audioand/or video files, such as MP3, AAC, and MPEG files. In someimplementations, the mobile device can include the functionality of anMP3 player, such as an iPod™. The mobile device may, therefore, includea pin connector that is compatible with the iPod. Other input/output andcontrol devices can also be used.

Memory interface 702 can be coupled to memory 750. Memory 750 caninclude high-speed random access memory and/or non-volatile memory, suchas one or more magnetic disk storage devices, one or more opticalstorage devices, and/or flash memory (e.g., NAND, NOR). Memory 750 canstore operating system 752, such as Darwin, RTXC, LINUX, UNIX, OS X,WINDOWS, or an embedded operating system such as VxWorks. Operatingsystem 752 may include instructions for handling basic system servicesand for performing hardware dependent tasks. In some implementations,operating system 752 can include a kernel (e.g., UNIX kernel).

Memory 750 may also store communication instructions 754 to facilitatecommunicating with one or more additional devices, one or more computersand/or one or more servers. Memory 750 may include graphical userinterface instructions 756 to facilitate graphic user interfaceprocessing; sensor processing instructions 758 to facilitatesensor-related processing and functions; phone instructions 760 tofacilitate phone-related processes and functions; electronic messaginginstructions 762 to facilitate electronic-messaging related processesand functions; web browsing instructions 764 to facilitate webbrowsing-related processes and functions; media processing instructions766 to facilitate media processing-related processes and functions;GPS/Navigation instructions 768 to facilitate GPS and navigation-relatedprocesses and instructions; camera instructions 770 to facilitatecamera-related processes and functions; magnetometer data 772 andcalibration instructions 774 to facilitate magnetometer calibration.Memory 750 can include location instructions 776 that can be used todetermine a cell location of mobile device 100, determine a WLANlocation of mobile device 100, and selecting one of the cell locationand the WLAN location as a current location of mobile device 100. Memory750 can also store other software instructions (not shown), such assecurity instructions, web video instructions to facilitate webvideo-related processes and functions, and/or web shopping instructionsto facilitate web shopping-related processes and functions. In someimplementations, the media processing instructions 766 are divided intoaudio processing instructions and video processing instructions tofacilitate audio processing-related processes and functions and videoprocessing-related processes and functions, respectively. An activationrecord and International Mobile Equipment Identity (IMEI) or similarhardware identifier can also be stored in memory 750.

Each of the above identified instructions and applications cancorrespond to a set of instructions for performing one or more functionsdescribed above. These instructions need not be implemented as separatesoftware programs, procedures, or modules. Memory 750 can includeadditional instructions or fewer instructions. Furthermore, variousfunctions of the mobile device can be implemented in hardware and/or insoftware, including in one or more signal processing and/or applicationspecific integrated circuits.

Example Operating Environment

FIG. 8 is a block diagram of an example network operating environment800 for the mobile devices of FIGS. 1-7. Mobile devices 802 a and 802 bcan, for example, communicate over one or more wired and/or wirelessnetworks 810 in data communication. For example, a wireless network 812,e.g., a cellular network, can communicate with a wide area network (WAN)814, such as the Internet, by use of a gateway 816. Likewise, an accessdevice 818, such as an 802.11g wireless access device, can providecommunication access to the wide area network 814.

In some implementations, both voice and data communications can beestablished over wireless network 812 and the access device 818. Forexample, mobile device 802 a can place and receive phone calls (e.g.,using voice over Internet Protocol (VoIP) protocols), send and receivee-mail messages (e.g., using Post Office Protocol 3 (POP3)), andretrieve electronic documents and/or streams, such as web pages,photographs, and videos, over wireless network 812, gateway 816, andwide area network 814 (e.g., using Transmission ControlProtocol/Internet Protocol (TCP/IP) or User Datagram Protocol (UDP)).Likewise, in some implementations, the mobile device 802 b can place andreceive phone calls, send and receive e-mail messages, and retrieveelectronic documents over the access device 818 and the wide areanetwork 814. In some implementations, mobile device 802 a or 802 b canbe physically connected to the access device 818 using one or morecables and the access device 818 can be a personal computer. In thisconfiguration, mobile device 802 a or 802 b can be referred to as a“tethered” device.

Mobile devices 802 a and 802 b can also establish communications byother means. For example, wireless device 802 a can communicate withother wireless devices, e.g., other mobile devices 802 a or 802 b, cellphones, etc., over the wireless network 812. Likewise, mobile devices802 a and 802 b can establish peer-to-peer communications 820, e.g., apersonal area network, by use of one or more communication subsystems,such as the Bluetooth™ communication devices. Other communicationprotocols and topologies can also be implemented.

The mobile device 802 a or 802 b can, for example, communicate with oneor more services 830 and 840 over the one or more wired and/or wirelessnetworks. For example, one or more location services 830 can determinelocations associated with various location identifiers (e.g., cell IDsor MAC addresses) based on raw location data received from one or morelocation-aware mobile devices. The locations can be associated withconfidence values, which can be calculated by mining the raw locationdata. The one or more location services 830 can provide the locationsand confidence values to mobile devices.

Application program service 840 can, for example, provide applicationprograms for download to mobile devices 802 a and 802 b. The applicationprograms can include application programs that can provide locationbased services.

Mobile device 802 a or 802 b can also access other data and content overthe one or more wired and/or wireless networks. For example, contentpublishers, such as news sites, Really Simple Syndication (RSS) feeds,web sites, blogs, social networking sites, developer networks, etc., canbe accessed by mobile device 802 a or 802 b. Such access can be providedby invocation of a web browsing function or application (e.g., abrowser) in response to a user touching, for example, a Web object.

A number of implementations of the invention have been described.Nevertheless, it will be understood that various modifications can bemade without departing from the spirit and scope of the invention. Forexample, the location-aware devices are referred to as GPS-enabled.Location-aware mobile devices can also be based triangulation or othertechnology. WLAN cells are represents as substantially rectangular inshape in the figures. The actual shape of a WLAN cell can vary.Locations of a mobile device, when error margins are involved, arerepresented as circles in the figures. The actual shape of a location ofthe mobile device can have various geometric form (e.g., polygons,ellipses, or other shapes). WiFi™, WiMax, and cellular networks are usedas examples. Other wireless technology (e.g., personal area network) canalso be employed. Accordingly, other implementations are within thescope of the following claims.

What is claimed is:
 1. A method executed by a computer, including:receiving a set of raw locations from one or more location-aware mobiledevices located in a cell of a cellular communications network;determining a cell location to be associated with the cell using the setof raw locations; determining a confidence value of the cell location,the confidence value based on a number of raw locations in the set; andproviding the cell location in association with the confidence value toa mobile device.
 2. The method of claim 1, where the confidence value isproportional to the number of raw locations in the set.
 3. The method ofclaim 1, where determining the confidence value includes adjusting theconfidence value based on a stability of the cell location, thestability including a length of time during which the cell location issubstantially unchanged.
 4. The method of claim 1, where determining theconfidence value includes adjusting the confidence value based on afreshness of the raw locations, the freshness including a length of timethat has elapsed since a last raw location of the raw locations wasreceived.
 5. The method of claim 1, where each of the raw locationsincludes a latitude coordinate, a longitude coordinate, and an altitudecoordinate.
 6. A system, comprising: one or more computers; and anon-transitory storage device storing a computer program productconfigured to cause the one or more computers to perform operationscomprising: receiving a set of raw locations from one or morelocation-aware mobile devices located in a cell of a cellularcommunications network; determining a cell location to be associatedwith the cell using the set of raw locations; determining a confidencevalue of the cell location based on a number of raw locations in theset; and providing the cell location in association with the confidencevalue to a mobile device.
 7. The system of claim 6, wherein theconfidence value is proportional to the number of raw locations in theset.
 8. The system of claim 6, wherein determining the confidence valueincludes adjusting the confidence value based on a stability of the celllocation, the stability including a length of time during which the celllocation is substantially unchanged.
 9. The system of claim 6, whereindetermining the confidence value includes adjusting the confidence valuebased on a freshness of the raw locations, the freshness including alength of time that has elapsed since a last raw location of the rawlocations was received.
 10. The system of claim 6, wherein each of theraw locations includes a latitude coordinate, a longitude coordinate,and an altitude coordinate.
 11. A non-transitory storage device storinga computer program product configured to cause one or more computers toperform operations comprising: receiving a set of raw locations from oneor more location-aware mobile devices located in a cell of a cellularcommunications network; determining a cell location to be associatedwith the cell using the set of raw locations; determining a confidencevalue of the cell location based on a number of raw locations in theset; and providing the cell location in association with the confidencevalue to a mobile device.
 12. The non-transitory storage device of claim11, wherein the confidence value is proportional to the number of rawlocations in the set.
 13. The non-transitory storage device of claim 11,wherein determining the confidence value includes adjusting theconfidence value based on a stability of the cell location, thestability including a length of time during which the cell location issubstantially unchanged.
 14. The non-transitory storage device of claim11, wherein determining the confidence value includes adjusting theconfidence value based on a freshness of the raw locations, thefreshness including a length of time that has elapsed since a last rawlocation of the raw locations was received.
 15. The non-transitorystorage device of claim 11, wherein each of the raw locations includes alatitude coordinate, a longitude coordinate, and an altitude coordinate.